/*
 * ComposicaoProduto.java
 *
 * Created on August 5, 2007, 6:17 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package tcc.domain.produto;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import tcc.domain.AbstractBean;

/**
 *
 * @author Diego
 */
@Entity
public class ComposicaoProduto extends AbstractBean implements Serializable{
    
    /** Creates a new instance of ComposicaoProduto */
    public ComposicaoProduto() { }
    
    public ComposicaoProduto(Produto produto,Componente componente,Double quantidade) {
        this.produto = produto;
        this.componente = componente;
        this.quantidade = quantidade;
    }
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    @OneToOne
    private Produto produto;
    @OneToOne
    private Componente componente;
    private Double quantidade;

    // <editor-fold defaultstate="collapsed" desc=" Acessors ">

    public Produto getProduto() {
        return produto;
    }
    
    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public Componente getComponente() {
        return componente;
    }

    public void setComponente(Componente componente) {
        this.componente = componente;
    }

    public Double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(Double quantidade) {
        this.quantidade = quantidade;
    }

    // </editor-fold>
    
    @Override
    public boolean equals(Object o){
        if (o != null){
            if(o instanceof ComposicaoProduto){
                ComposicaoProduto cp = (ComposicaoProduto)o;
                if(cp.getComponente().equals(this.componente)
                && cp.getProduto().equals(this.produto)
                && cp.getQuantidade().equals(this.quantidade)       
                ){
                    return true;
                }
            }
        } 
        return false;
    }
    
    @Override
    public int hashCode() {
        return this.componente.hashCode() ^ this.produto.hashCode() ^ this.quantidade.hashCode(); 
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
    
}
